package cn.xzc.job;


import java.time.Clock;
import java.util.Date;

/**
 * 当前执行任务相关的时间信息【当前时区的当前时间、当前计划执行开始和结束时的时间 mills】
 *
 * @author xzc
 * 当前时间 2024-02-12 21:30:00
 */
public interface TimerContext {

    /**
     * Return the clock to use for trigger calculation.
     * 用于获取当前时区的mills：某种意义上相当于System.currentTimeMillis()
     */
    default Clock getClock() {
        return Clock.systemDefaultZone();
    }

    /**
     * Return the last scheduled  execution time of the task, or null  if not scheduled before.
     * 最后一次计划要开始的执行时间
     * 在没有执行前为null
     */
    Date lastScheduledExecutionTime();

    /**
     * Return the last actual  execution time of the task, or null if not scheduled before.
     * 最后一次实际开始的执行时间
     * 在没有执行前为null
     */
    Date lastActualExecutionTime();

    /**
     * Return the last completion time of the task, or null if not scheduled before.
     * 最后一次执行完成的执行时间，在 没有执行前为null
     */
    Date lastCompletionTime();

}